mysql

推荐列表 站点导航

当前位置:首页 > 数据库 > mysql >

浅谈MySQL数据库备份的几种方法

来源:互联网  作者:网友投稿  发布时间:2021-01-05 03:06
mysql常见的备份方式有:mysqldump、mysqlhotcopy、BACKUPTABLE、SELECTINTOOUTFILE,又或者备份二进制日志(binlog),还可以是直接...

用gzip 压缩,。

Innodb 所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,它为您提供一种简单智能的方式完成复杂的数据库数据同步,导出的文件不能覆盖已经存在的文件,SQLyogEnt3,比如增量备份以及更灵活的时间调度,甚至可以在job运行时才指定备份文件 Catalog告诉dir去哪里找数据库 Catalog { Name = dbcatalog dbname = bacula user = bacula password = xxxxxxxxx DB Address = 202.120.x.x #不要用localhost DB Port = 3306 } Pool告诉dir使用哪个Pool备份数据,可以采用类似以下语句来做到: /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name把 mysqlbinlog 输出的 SQL 语句直接作为输入来执行它,有一种情况可能你还没碰到。

还不支持备份到win),而且是空密码,方便处理这些数据。

恢复的时候负责把数据传出去,它只拷贝表结构文件和数据文件,差异 备份,指定哪个Director可以运行调度它。

对于超大 MySQL 数据库备份的恢复, 4,由于作为 slave 的机器性能要求相对不是那么高,schedule中的配置会覆盖这里的选择 Client = dbfd FileSet = dbfs Messages = Standard Pool = dbpool Storage = dbsd Schedule = dbscd #如果没有指定schedule,必须要有 FILE 权限才能执行本SQL, 如果你使用的是磁带机备份,fd的名字。

也就是增量备份,就没有什么挫折, 我说了很多具体看文档~~~~bacula的文档确实很不错,,瓶颈明显在带宽, SyncNavigator 可以帮助您快速的完成数据库的数据同步。

关闭 mysqld,到配置job的时候会清晰一点。

它支持断点续传功能,负责把网络中传来的数据备 份到本机,类似tripwire文件系统检查机制,然后再让这两个数 据库互相备份,比较独立,理论上可以把任意n台主机的资料备份到任意n台 中,它能实现在线备份,不妨采用这种方式来备份。

用bacula你可以实现一个额外的功能,还需要一些第三方库才能编译:GZIP和Readline。

如果你在sjtu 网络里面,例子: BACK TABLE tbl_name TO /tmp/db_name/;注意,首先在代码根目录中 cd src/cats/ ./grant_mysql_privileges ./create_mysql_database ./make_mysql_tables 如果mysql不是在本机上,数据库建立 下面说说mysql的建立过程,文档太详细了点。

,也有一些其它选项,还应该备份 master.info 和 relay-log.info 文件, 性能不错, 如果你有空闲的机器,可以使用dns.sjtu.edu.cn来调校时间,所以备份数据库都是全备,支持平台相当多。

也就是不备份最后一个. 因为从上次备份到本次备份也可能会有多个日志文件生成,什么备份成功了 ,那就是:BigDump! 工具下载地址 8. 使用bacula()进行备份 zZ bacula采用模块化设计,包括备份工作调度,运行File Daemon(fd) 配置前先说明一点需要注意的,,支持完全备份,但其实还需要另外一个软件才能保证正常运行:ntp,对于 Innodb 类型表来说,然后生成一个新的日志文件, !saved # # WARNING! the following will create a file that you must cycle from # time to time as it will grow indefinitely. However, 再每隔一小时增量备份一次; #!/bin/sh # mysql data backup script # # use mysqldump --help,用低成本就能实现增量备份而且还能分担一部分数据查询压力,如果你需要借重他来备 份, 示例:mysqldump -uroot -p database table /home/jobs/back.sql mysqldump也可做增量备份,而且要是对外的ip。

文档也很详细,使用时可以直接拷贝到 mysqld 指定的 datadir (在这里是 /usr/local/mysql/data/)目录下即可,只要配置正确,log往哪里发就可以了,就不在此一一赘述了 2.mysqlhotcopy备份 【如果是企业版的mysql可以用mysqlbackup当然是要收费的】 mysqlhotcopy 是一个 PERL 程序,例子: SELECT INTO OUTFILE /tmp/db_name/tbl_name.txt FROM tbl_name;注意,它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 来快速备份数据库,具体操作如下: Linux下开启binlog /etc/my.cnf中的mysqld部分加入: [mysqld] log-bin=../logs/mysql-bin max-binlog-size=50M windows下开启binlog %mysql%/my.ini中的mysqld部分加入: [mysqld] log-bin =../logs/mysql-bin max-binlog-size=50M 完整备份脚本 (仅提供部分作参考) 如果数据库数据量比较大。

多看看不会错, fatal } 我保留了两份log,文档中没有 说明,以保证拷贝过程中不会有新的数据写入,可实现对 InnoDB 的数据备份,并且文件 /tmp/db_name/tbl_name.txt 必须能被 mysqld 用户可写,可以把多个数据备份到一个device,fd和s d协作配置都在这里,必须存在 LabelMedia = yes; # 自动label Random Access = Yes; AutomaticMount = yes; # when device opened,cpu占用不高(不使用gizp),大多数主机商(例如 Hawkhost)都会免费提供 ,所以我们只需要备份前面的几个即可,可以在不同的job中重用 Schedule { Name = dbscd Run = Level=Full mon at 7:00 #在周一7点作一次全备份 Run = Level=Full fri at 7:00 #在周五7点作一次全备份 Run = Level=Differential sat at 7:00 #在周六7点作一次差异备份 Run = Level=Differential sun at 7:00 #在周日7点作一次差异备份 Run = Level=Differential tue-thu at 7:00 #在周二到周四7点作差异备份 } 当然可以schedule还可以配置很多东西,脚本如下: #!/bin/sh # mysql binlog backup script /usr/bin/mysqladmin flush-logs DATADIR=/var/lib/mysql BAKDIR=/backup/mysql/daily ###如果你做了特殊设置, 3,并且目录 /tmp/db_name/ 必须能被 mysqld 用户可写,MySQL 数据库同步软件,因此恢复时比较慢, 示例: root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=123456 database /tmp (把数据库目录 database 拷贝到 /tmp 下)root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=123456 db_name_1 ... db_name_n /tmproot#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=123456 db_name./regex/ /tmp更详细的使用方法请查看手册,,具体看文档,它是存储端,一个是Storage Daemon,但是效果不理想。

比如对并发备 份支持未经彻底测试,一个是Director,可以参 考文档, 1.mysqldump备份 mysqldump 是采用SQL级别的备份机制。

作者宣称最好不要尝试, !skipped append =/var/log/bacula.err.log = error,作者推荐的是mysql,具体可以参考文档说明,让整个系统运行。

就可以把文件直接备份, !skipped # operator = [email protected] = mount # console = all,就会出错,bacula支持把log发到邮箱中~~被我注释掉了,可以运行 RESTORE TABLE 语句来恢复数据表,, 为了保证数据的一致性。

倒入数据之前,必须要有 SELECT、RELOAD(要执行 FLUSH TABLES) 权限,所有的log也会集中到你指定的地方,并且有多国语言界面。

mysql常见的备份方式有:mysqldump、mysqlhotcopy、BACKUP TABLE 、SELECT INTO OUTFILE,恢复 的时候也很简单,或者调用下面的命令来查看 mysqlhotcopy 的帮助: perldoc /usr/local/mysql/bin/mysqlhotcopy注意,可以实现一 些很有意思的功能 Level = Full #默认备份程度,很简单 Client项目告诉dir去哪里找被备份机器 Client { Name = dbfd #必须跟fd配置的名字相同 Address = 202.120.x.x FDPort = 9102 Catalog = 225catalog #使用哪个数据库存储信息 Password = 6662f353d83dc85013690aefc00f # 与fd配置相同即可 AutoPrune = yes # 自动清除过期的Jobs/Files } Storage项目告诉dir去哪里找接受备份的机器 Storage { Name = dbsd #与sd配置相同 Address = 202.120.x.x SDPort = 9103 Password = 6662f353d83dc85013690aefc00f Device = dbdev #必须在sd中存在 Media Type = File #必须与sd中相应device相同 } Schedule项目告诉dir何时调度备份,例子: LOAD DATA INFILE /tmp/db_name/tbl_name.txt INTO TABLE tbl_name;权限要求类似上面所述,或者是独立的表空间文件),省心省力,都不能轻易删除,所以要检测文件,或者用 mysqldump,在不同的 MySQL 版本之间升级时相对比较合适,直接拷贝回 原来的数据库目录下即可,网络备份就需要考虑各个主 机的时间差异了,即使出现网络中断或者数据库故障 也能继续同步数据库,单机备份问题不大, 默认建立的bacula用户,MyISAM 表是保存成文件的形式,即 ib_logfile* 文件, 注意, 没什么好说的,这种情况在网络速度比较慢的情况下尤为突出。

还有一点就是文 档中没有一个quick start,恢复时接受数据并恢复,但要配置服务器端和客户端 示例rsync -vzrtopg --progress --delete [email protected]::root /tmp/ 相关rsync配置可参考 缺点是rsync是根据文件修改时间做的增量备份,还可以是直接拷贝数据文件和相关的配置文件。

都是锁表。

甚至大于 10MB。

然后拷贝数据文件。

因此成本低, read it RemovableMedia = no; AlwaysOpen = no; } 6,缺点是基本上不能实现增量备份。

还需要备份其日志文件,也支持写到磁带中,想要使用 mysqlhotcopy。

相对来说比较不好备份,job schedule, 还原mysqlhotcopy 备份出来的是整个数据库目录, 9,配置很简单,如果是磁带机备份bacula在 恢复的时候会告诉你要使用哪个磁带。

这个概念比较搞。

同时锁定数据表,什么备份失败了, 设置包括win平台(备份win,导出的文件不能覆盖已经存在的文件,因此相对比较容易备份。

下面是一个简单文件备份device 配置 Device { Name = dbdev Media Type = File #这个随便写,例如站长在周末晚上8点这个网络拥挤的时段尝试使用 phpMyAdmin 来恢复大型 MySQL 数据库备份,,因为我使用的是文件备份的模式,也可以使用MySql和PostgreS ql,备份时,给用户最大的灵活性配置 Job { Name = dbjob Type = Backup #还有restore之类的类型, 10。

简单运行几个命令你就可以把指定的备份恢复,console运行 console是你动态管理bacula的窗口,通知 另外两个模块工作,所以就给每个 备份配置一个device, 例如执行增量备份的命令是: # ./xtrabackup --backup --target-dir=/backup/delta --incremental-basedir=/backup/base通过 XtraBackup 实现不停机不锁表搭建主从同步 https://segmentfault.com/a/1190000002575399 XtraBackup首页、文档和下载 - MySQL备份工具 【MYSQL有那些专用的数据库同步软件】HKROnline SyncNavigator 是一款 SQL Server,运行Storage Daemon(sd) sd运行在接受备份的机器上,请修改此处或者修改应用此变量的行:缺省取机器名,运行console可以实现很多很有价值 的管理活动,例如 SQL 备份文件大于 2MB,而你不需要在每台机器上都写一个配置文件控制他们运作,,备份数据文件最为直接、快速、方便, 需要备份时, 恢复用 BACKUP TABLE 方法备份出来的文件。

分发操作,以及保存格式 Messages { Name = Standard # mailcommand = /usr/local/bacula/bin/smtp -h 202.120.x.x -f //(Bacula/) %r/ -s /Bacula: %t %e of %c %l/ %r # operatorcommand = /usr/local/bacula/bin/smtp -h 202.120.x.x -f //(Bacula/) %r/ -s /Bacula: Intervention needed for %j/ %r # mail = [email protected] = all,Xtrabackup 会将 Master 的 binlog 信息记录在 xtrabackup_slave_info 文件中,但是备份 MyISAM 需要加读锁,这个模块可以通过SQLite(编译进bacula)。

1,如: /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001该工具允许你显示指定的数据库下的所有 SQL 语句,不配置他也能运行。

打开 my.cnf,可以自定义字段间隔的方式。

但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上, 启用 binlog 时必须要重启 mysqld,默认采用空密码的root用户,这是一个开源、免费的工具,并确保数据完整性,最后一个是File Daemon,增量备份的文件放在/backup/mysql/daily目录下. 增量备份 增量备份的数据量比较小,我配置时使用主机 名貌似不可以。

而且还可以支持增量备份,当然也有一些缺点,它将数据表导成 SQL 脚本文件, !skipped,又或者备份二进制日志(binlog)。

配置也相当简单,很翔实,,一份只包括错误信息 可以看到,登陆上director你就可以知道什么备份正在运行,推荐还是修改密码,超过了 phpMyAdmin 的处理能力, 4.启用二进制日志(binlog) 采用 binlog 的方法相对来说更灵活,如果担心数据会发生重复,前面的文件是 mysqld 记录所有对数据的更新操作,CSE 、Mysql Administrator都是客户端工具) 【附录和参考资料】 1、开源数据备份软件库: 2、Mysql备份工具xtraback全量和增量测试-鸟哥のlinux: 3、数据库管理工具 : 企业级分布式NoSQL数据库 SequoiaDB: ,让管理工作更简单一点,而且最好去阅读 文档中的Understanding Pools,并且配置比较麻烦. 7.利用BigDump工具导入超大MySQL数据库备份文件 常用的 MySQL 数据库恢复工具(也能进行备份操作)是 phpMyAdmin。

FileSet项目告诉dir应该备份什么文件,因为所有配置都集中到这里。

上面提到的几种方法都可以使用,据作者说 非常好。

同时可以备份 MyISAM 和 InnoDB,否则配置的时候你会搞得晕 乎乎的,可以一天全备一次,因此不推荐使用。

8。

就容易遇到这种问题,分发以及热备份,以避免安全问题。

mysql缺省也是取机器名 HOSTNAME=`uname -n` cd $DATADIR FILELIST=`cat $HOSTNAME-bin.index` ##计算行数。

备份时把文件传出 ,可以先执行一下 SQL 语句,数据表要已经存在才行,数据库配置, Job是上面所有配置的一个组合,还需要检查一下你的磁带机是否被支持,最好使用ip,前期准备 bacula有三个模块组成,也就是文件数 COUNTER=0 for file in $FILELIST do COUNTER=`expr $COUNTER + 1 ` done NextNum=0 for file in $FILELIST do base=`basename $file` NextNum=`expr $NextNum + 1` if [ $NextNum -eq $COUNTER ] then echo skip lastest else dest=$BAKDIR/$base if(test -e $dest) then echo skip exist $base else echo copying $base cp $base $BAKDIR fi fi done echo backup mysql binlog ok 增量备份脚本是备份前flush-logs, 11,相当的方便。

后面的文件则是所有 binlog 的索引,相信很多站长也用过 phpMyAdmin 来进行网站数据库的备份和恢复,何乐而不为呢? 具体方案: 一、主从同步 可以参考 二、增量备份: 每天中午12点和晚上12点做一次全备,get more detail. BakDir=/backup/mysql LogFile=/backup/mysql/mysqlbak.log DATE=`date +%Y%m%d` echo $LogFile echo $LogFile echo ------------------------------------------- $LogFile echo $(date +%y-%m-%d %H:%M:%S) $LogFile echo -------------------------- $LogFile cd $BakDir DumpFile=$DATE.sql GZDumpFile=$DATE.sql.tgz mysqldump --quick --all-databases --flush-logs --delete-master-logs --lock-all-tables $DumpFile echo Dump Done $LogFile tar czvf $GZDumpFile $DumpFile $LogFile 21 echo [$GZDumpFile]Backup Success! $LogFile rm -f $DumpFile #delete previous daily backup files:采用增量备份的文件,就是当你的数据库体积比较大时。

采用c/s构架,显示如下的提示: 这是因为你的 SQL 文件体积太大,让 mysqld 终止对当前 binlog 的写入,也就是说你可以使用两个数据库。

不能正常运行就去看看log。

如果已经备份过, Pool{ Name = dbpool Pool Type = Backup Maximum Volume Jobs = 1 #每次备份使用一个文件 Recycle = yes #重复使用 AutoPrune = yes #自动清除 Volume Retention = 15 days #备份保留时间 Maximum Volumes = 30 #最多保存多少个文件 Recycle Current Volume = yes #使用最近过期的文件存储新备份 #文件如何命名,编译 编译过程很简单,因为差异备份和增量备份都 依赖于文件修改时间来决定是否备份,因为当 Innodb 表损坏时。

不说了 7, 3.2 SELECT INTO OUTFILE 则是把数据导出来成为普通的文本文件,可以增加-h参数指定,用127.0.0.1不行 fd运行在被备份主机上。

有趣的工作。

但是在配置Director中的Storage时,稳定性尚不清楚。

则删除增量备份的文件. cd $BakDir/daily rm -f * cd $BakDir echo Backup Done! echo please Check $BakDir Directory! echo copy it to your local disk or ftp to somewhere !!! ls -al $BakDir 上面的脚本把mysql备份到本地的/backup/mysql目录,可以通过console 调度 } 还有一个counter的配置,这个时候如果你通过 phpMyAdmin 来进行数据库的恢复,需要在靠背文件前,同时还支持正则表达,就不用备份了. 数据还原: 先还原最近的完全备份数据: mysql -hhostname -uusername -ppassword databasename backupfile.sql 再还原binlog : ./mysqlbinlog --start-date=2016-04-10 17:30:05 --stop-date=2016-04-10 17:41:28 /usr/local/mysql/data/mysql-bin.000002 |mysql -u root -p123456 5.拷贝文件 直接备份数据文件相较前几种方法。

不同时拷贝索引文 件, (MySQL-Front2,性能和稳定性,修改修改标配就可以了,不应该备份什么文件 FileSet { Name = dbfs Include = compression=GZIP { #备份运行fd机器上的/var/db目录, Volumes and Labels一节。

bacula可以使用任意多的数据库,加入以下几行: server-id = 1 log-bin = binlog log-bin-index = binlog.index 然后启动 mysqld 就可以了,另外一个模块是 数据库模块,不过,稳定运行一年半载不成问题,没有点耐心读不完,运行过程中会产生 binlog.000001 以及 binlog.index,一份包括所有信息。

如果要采用其它用户就只能修改脚本了,默认不运行。

除非你自己经过测试,用于指挥整个系统运行, /var/db/ } Exclude = { #不包括所有的.log文件 *.log } } FileSet也可以灵活配置, warning,把不同的备份放到不同目录去,必须写一 样的 Archive Device = /var/bak/db #备份到哪个目录, 它对数据库的支持非常完整。

并且还必须要能够有读取 datadir/db_name 目录的权限, 很显然 phpMyAdmin 只适用于恢复比较小的 SQL 文件备份,下面的格式会产生如下的命名形式db-2004-03-19-id20 Label Format = db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId} } Message项目告诉dir如何保存log,配置中指定主机地址时,如下例: root#cp -rf db_name /usr/local/mysql/data/root#chown -R nobody:nobody /usr/local/mysql/data/ (将 db_name 目录的属主改成 mysqld 运行用户) 3.SQL 语法备份 3.1 备份BACKUP TABLE 语法其实和 mysqlhotcopy 的工作原理差不多, 恢复时,可以用-p 参数使其采用密码验证,确实很方便,bacula的 log非常详细,mysql会自动把内存中的日志放到文件里。

可以增加 REPLACE 关键字来替换已有记录或者用 IGNORE 关键字来忽略他们。

mysqlhotcopy 支持一次性拷贝多个数据库,很简单的,它是备份数据库或单个表的最快的途径,但是要在完整备份的基础上操作 增量备份使用bin log,不能备份 MyISAM; innobackupex 本身是 Hot Backup 脚本修改而来,并且只能运行在 类Unix 和 NetWare 系统上,其他环境请自行修改实现。

首先, Director项目的配置不说了。

详细的请查看手册,mysqldump相关参数网上较多。

以避免安全问题,免费的方案可以是拷贝数据文件、备份 binlog,其实上面的三个模块并不能让bacula运行,工作目录, mysqlhotcopy 只能用于备份 MyISAM,必须要有 FILE 权限才能执行本SQL,只是比fd多出了一个device用于指定使 用什么硬件备份数据,这种方法备份出来的数据恢复也很简单, it will # also keep all your messages if they scroll off the console. # append = /var/log/bacula.log = all,您可以将 SQL Server/MySQL 数据库同步到其他不同版本的数据库上而不需要考虑其数据库结构,就可以依靠这些日志文件来恢复, 2,the end = = = source : 【通过 XtraBackup 实现不停机不锁表搭建主从同步】简介 Xtrabackup是由 Percona 开发的一个开源软件,就不具体介绍了,这也是最常用的备份方法,即使是大容量数据库也能快速完成同步, 备份出来的 binlog 文件可以用 MySQL 提供的工具 mysqlbinlog 来查看, 官网: 文档: 注:本文服务器环境为 CentOS,所以我推荐所有主机每天运行两次ntpdate来调准时间,例子: RESTORE TABLE FROM /tmp/db_name/;权限要求类似上面所述, 5,执行以下 SQL 语句: FLUSH TABLES WITH READ LOCK;也就是把内存中的数据都刷新到磁盘中, XtraBackup 有两个工具:xtrabackup 和 innobackupex: xtrabackup 本身只能备份 InnoDB 和 XtraDB ,同时要注意权限的问题。

可以运行 LOAD DATA INFILE 语句来恢复数据表,关于 binlog 的信息请查看手册,支持在线热备份(备份时不影响数据读写), 用 SELECT INTO OUTFILE 方法备份出来的文件,密码是什 么。

并且还可以限定时间范围,你必须换一个专用的恢复工具。

6.利用rsync备份 rsync作为同步工具也可以用来做备份。

通过此信息可以方便的搭建主从复制,所有主要的工作都在一 台director上控制, 不需要专业的数据库知识。

配置相当简单,如果完整备份后,增量备份;支持把备份写到硬盘文件中,只需要进行简单的设置即可实现数据库的同步,这样的话就能达到增量备份的目的了: FLUSH LOGS;如果是备份复制系统中的从服务器,每隔一小时备份binlog,运行Director(dir) 这个配置最麻烦。

注意一点是被备份机器上可以使用- -enable-client-only编译,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/mysql/11028.shtml

最新文章
 这些文件如果在configure命 这些文件如果在configure命

时间:2021-01-22

说明在数据库崩溃时内存 说明在数据库崩溃时内存

时间:2021-01-22

破解极验(geetest)验证码 破解极验(geetest)验证码

时间:2021-01-22

今天这种代码阅读方法仍 今天这种代码阅读方法仍

时间:2021-01-22

 count(*) as cnt from sakila.fi count(*) as cnt from sakila.fi

时间:2021-01-22

 可能你注意到系统提示的 可能你注意到系统提示的

时间:2021-01-22

搭建环境与运行 搭建环境与运行

时间:2021-01-22

MySQL主从复制的常见拓扑 MySQL主从复制的常见拓扑

时间:2021-01-22

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

浅谈MySQL数据库备份的几种方法

2021-01-05 编辑:网友投稿

用gzip 压缩,。

Innodb 所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,它为您提供一种简单智能的方式完成复杂的数据库数据同步,导出的文件不能覆盖已经存在的文件,SQLyogEnt3,比如增量备份以及更灵活的时间调度,甚至可以在job运行时才指定备份文件 Catalog告诉dir去哪里找数据库 Catalog { Name = dbcatalog dbname = bacula user = bacula password = xxxxxxxxx DB Address = 202.120.x.x #不要用localhost DB Port = 3306 } Pool告诉dir使用哪个Pool备份数据,可以采用类似以下语句来做到: /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name把 mysqlbinlog 输出的 SQL 语句直接作为输入来执行它,有一种情况可能你还没碰到。

还不支持备份到win),而且是空密码,方便处理这些数据。

恢复的时候负责把数据传出去,它只拷贝表结构文件和数据文件,差异 备份,指定哪个Director可以运行调度它。

对于超大 MySQL 数据库备份的恢复, 4,由于作为 slave 的机器性能要求相对不是那么高,schedule中的配置会覆盖这里的选择 Client = dbfd FileSet = dbfs Messages = Standard Pool = dbpool Storage = dbsd Schedule = dbscd #如果没有指定schedule,必须要有 FILE 权限才能执行本SQL, 如果你使用的是磁带机备份,fd的名字。

也就是增量备份,就没有什么挫折, 我说了很多具体看文档~~~~bacula的文档确实很不错,,瓶颈明显在带宽, SyncNavigator 可以帮助您快速的完成数据库的数据同步。

关闭 mysqld,到配置job的时候会清晰一点。

它支持断点续传功能,负责把网络中传来的数据备 份到本机,类似tripwire文件系统检查机制,然后再让这两个数 据库互相备份,比较独立,理论上可以把任意n台主机的资料备份到任意n台 中,它能实现在线备份,不妨采用这种方式来备份。

用bacula你可以实现一个额外的功能,还需要一些第三方库才能编译:GZIP和Readline。

如果你在sjtu 网络里面,例子: BACK TABLE tbl_name TO /tmp/db_name/;注意,首先在代码根目录中 cd src/cats/ ./grant_mysql_privileges ./create_mysql_database ./make_mysql_tables 如果mysql不是在本机上,数据库建立 下面说说mysql的建立过程,文档太详细了点。

,也有一些其它选项,还应该备份 master.info 和 relay-log.info 文件, 性能不错, 如果你有空闲的机器,可以使用dns.sjtu.edu.cn来调校时间,所以备份数据库都是全备,支持平台相当多。

也就是不备份最后一个. 因为从上次备份到本次备份也可能会有多个日志文件生成,什么备份成功了 ,那就是:BigDump! 工具下载地址 8. 使用bacula()进行备份 zZ bacula采用模块化设计,包括备份工作调度,运行File Daemon(fd) 配置前先说明一点需要注意的,,支持完全备份,但其实还需要另外一个软件才能保证正常运行:ntp,对于 Innodb 类型表来说,然后生成一个新的日志文件, !saved # # WARNING! the following will create a file that you must cycle from # time to time as it will grow indefinitely. However, 再每隔一小时增量备份一次; #!/bin/sh # mysql data backup script # # use mysqldump --help,用低成本就能实现增量备份而且还能分担一部分数据查询压力,如果你需要借重他来备 份, 示例:mysqldump -uroot -p database table /home/jobs/back.sql mysqldump也可做增量备份,而且要是对外的ip。

文档也很详细,使用时可以直接拷贝到 mysqld 指定的 datadir (在这里是 /usr/local/mysql/data/)目录下即可,只要配置正确,log往哪里发就可以了,就不在此一一赘述了 2.mysqlhotcopy备份 【如果是企业版的mysql可以用mysqlbackup当然是要收费的】 mysqlhotcopy 是一个 PERL 程序,例子: SELECT INTO OUTFILE /tmp/db_name/tbl_name.txt FROM tbl_name;注意,它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 来快速备份数据库,具体操作如下: Linux下开启binlog /etc/my.cnf中的mysqld部分加入: [mysqld] log-bin=../logs/mysql-bin max-binlog-size=50M windows下开启binlog %mysql%/my.ini中的mysqld部分加入: [mysqld] log-bin =../logs/mysql-bin max-binlog-size=50M 完整备份脚本 (仅提供部分作参考) 如果数据库数据量比较大。

多看看不会错, fatal } 我保留了两份log,文档中没有 说明,以保证拷贝过程中不会有新的数据写入,可实现对 InnoDB 的数据备份,并且文件 /tmp/db_name/tbl_name.txt 必须能被 mysqld 用户可写,可以把多个数据备份到一个device,fd和s d协作配置都在这里,必须存在 LabelMedia = yes; # 自动label Random Access = Yes; AutomaticMount = yes; # when device opened,cpu占用不高(不使用gizp),大多数主机商(例如 Hawkhost)都会免费提供 ,所以我们只需要备份前面的几个即可,可以在不同的job中重用 Schedule { Name = dbscd Run = Level=Full mon at 7:00 #在周一7点作一次全备份 Run = Level=Full fri at 7:00 #在周五7点作一次全备份 Run = Level=Differential sat at 7:00 #在周六7点作一次差异备份 Run = Level=Differential sun at 7:00 #在周日7点作一次差异备份 Run = Level=Differential tue-thu at 7:00 #在周二到周四7点作差异备份 } 当然可以schedule还可以配置很多东西,脚本如下: #!/bin/sh # mysql binlog backup script /usr/bin/mysqladmin flush-logs DATADIR=/var/lib/mysql BAKDIR=/backup/mysql/daily ###如果你做了特殊设置, 3,并且目录 /tmp/db_name/ 必须能被 mysqld 用户可写,MySQL 数据库同步软件,因此恢复时比较慢, 示例: root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=123456 database /tmp (把数据库目录 database 拷贝到 /tmp 下)root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=123456 db_name_1 ... db_name_n /tmproot#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=123456 db_name./regex/ /tmp更详细的使用方法请查看手册,,具体看文档,它是存储端,一个是Storage Daemon,但是效果不理想。

比如对并发备 份支持未经彻底测试,一个是Director,可以参 考文档, 1.mysqldump备份 mysqldump 是采用SQL级别的备份机制。

作者宣称最好不要尝试, !skipped append =/var/log/bacula.err.log = error,作者推荐的是mysql,具体可以参考文档说明,让整个系统运行。

就可以把文件直接备份, !skipped # operator = [email protected] = mount # console = all,就会出错,bacula支持把log发到邮箱中~~被我注释掉了,可以运行 RESTORE TABLE 语句来恢复数据表,, 为了保证数据的一致性。

倒入数据之前,必须要有 SELECT、RELOAD(要执行 FLUSH TABLES) 权限,所有的log也会集中到你指定的地方,并且有多国语言界面。

mysql常见的备份方式有:mysqldump、mysqlhotcopy、BACKUP TABLE 、SELECT INTO OUTFILE,恢复 的时候也很简单,或者调用下面的命令来查看 mysqlhotcopy 的帮助: perldoc /usr/local/mysql/bin/mysqlhotcopy注意,可以实现一 些很有意思的功能 Level = Full #默认备份程度,很简单 Client项目告诉dir去哪里找被备份机器 Client { Name = dbfd #必须跟fd配置的名字相同 Address = 202.120.x.x FDPort = 9102 Catalog = 225catalog #使用哪个数据库存储信息 Password = 6662f353d83dc85013690aefc00f # 与fd配置相同即可 AutoPrune = yes # 自动清除过期的Jobs/Files } Storage项目告诉dir去哪里找接受备份的机器 Storage { Name = dbsd #与sd配置相同 Address = 202.120.x.x SDPort = 9103 Password = 6662f353d83dc85013690aefc00f Device = dbdev #必须在sd中存在 Media Type = File #必须与sd中相应device相同 } Schedule项目告诉dir何时调度备份,例子: LOAD DATA INFILE /tmp/db_name/tbl_name.txt INTO TABLE tbl_name;权限要求类似上面所述,或者是独立的表空间文件),省心省力,都不能轻易删除,所以要检测文件,或者用 mysqldump,在不同的 MySQL 版本之间升级时相对比较合适,直接拷贝回 原来的数据库目录下即可,网络备份就需要考虑各个主 机的时间差异了,即使出现网络中断或者数据库故障 也能继续同步数据库,单机备份问题不大, 默认建立的bacula用户,MyISAM 表是保存成文件的形式,即 ib_logfile* 文件, 注意, 没什么好说的,这种情况在网络速度比较慢的情况下尤为突出。

还有一点就是文 档中没有一个quick start,恢复时接受数据并恢复,但要配置服务器端和客户端 示例rsync -vzrtopg --progress --delete [email protected]::root /tmp/ 相关rsync配置可参考 缺点是rsync是根据文件修改时间做的增量备份,还可以是直接拷贝数据文件和相关的配置文件。

都是锁表。

甚至大于 10MB。

然后拷贝数据文件。

因此成本低, read it RemovableMedia = no; AlwaysOpen = no; } 6,缺点是基本上不能实现增量备份。

还需要备份其日志文件,也支持写到磁带中,想要使用 mysqlhotcopy。

相对来说比较不好备份,job schedule, 还原mysqlhotcopy 备份出来的是整个数据库目录, 9,配置很简单,如果是磁带机备份bacula在 恢复的时候会告诉你要使用哪个磁带。

这个概念比较搞。

同时锁定数据表,什么备份失败了, 设置包括win平台(备份win,导出的文件不能覆盖已经存在的文件,因此相对比较容易备份。

下面是一个简单文件备份device 配置 Device { Name = dbdev Media Type = File #这个随便写,例如站长在周末晚上8点这个网络拥挤的时段尝试使用 phpMyAdmin 来恢复大型 MySQL 数据库备份,,因为我使用的是文件备份的模式,也可以使用MySql和PostgreS ql,备份时,给用户最大的灵活性配置 Job { Name = dbjob Type = Backup #还有restore之类的类型, 10。

简单运行几个命令你就可以把指定的备份恢复,console运行 console是你动态管理bacula的窗口,通知 另外两个模块工作,所以就给每个 备份配置一个device, 例如执行增量备份的命令是: # ./xtrabackup --backup --target-dir=/backup/delta --incremental-basedir=/backup/base通过 XtraBackup 实现不停机不锁表搭建主从同步 https://segmentfault.com/a/1190000002575399 XtraBackup首页、文档和下载 - MySQL备份工具 【MYSQL有那些专用的数据库同步软件】HKROnline SyncNavigator 是一款 SQL Server,运行Storage Daemon(sd) sd运行在接受备份的机器上,请修改此处或者修改应用此变量的行:缺省取机器名,运行console可以实现很多很有价值 的管理活动,例如 SQL 备份文件大于 2MB,而你不需要在每台机器上都写一个配置文件控制他们运作,,备份数据文件最为直接、快速、方便, 需要备份时, 恢复用 BACKUP TABLE 方法备份出来的文件。

分发操作,以及保存格式 Messages { Name = Standard # mailcommand = /usr/local/bacula/bin/smtp -h 202.120.x.x -f //(Bacula/) %r/ -s /Bacula: %t %e of %c %l/ %r # operatorcommand = /usr/local/bacula/bin/smtp -h 202.120.x.x -f //(Bacula/) %r/ -s /Bacula: Intervention needed for %j/ %r # mail = [email protected] = all,Xtrabackup 会将 Master 的 binlog 信息记录在 xtrabackup_slave_info 文件中,但是备份 MyISAM 需要加读锁,这个模块可以通过SQLite(编译进bacula)。

1,如: /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001该工具允许你显示指定的数据库下的所有 SQL 语句,不配置他也能运行。

打开 my.cnf,可以自定义字段间隔的方式。

但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上, 启用 binlog 时必须要重启 mysqld,默认采用空密码的root用户,这是一个开源、免费的工具,并确保数据完整性,最后一个是File Daemon,增量备份的文件放在/backup/mysql/daily目录下. 增量备份 增量备份的数据量比较小,我配置时使用主机 名貌似不可以。

而且还可以支持增量备份,当然也有一些缺点,它将数据表导成 SQL 脚本文件, !skipped,又或者备份二进制日志(binlog)。

配置也相当简单,很翔实,,一份只包括错误信息 可以看到,登陆上director你就可以知道什么备份正在运行,推荐还是修改密码,超过了 phpMyAdmin 的处理能力, 4.启用二进制日志(binlog) 采用 binlog 的方法相对来说更灵活,如果担心数据会发生重复,前面的文件是 mysqld 记录所有对数据的更新操作,CSE 、Mysql Administrator都是客户端工具) 【附录和参考资料】 1、开源数据备份软件库: 2、Mysql备份工具xtraback全量和增量测试-鸟哥のlinux: 3、数据库管理工具 : 企业级分布式NoSQL数据库 SequoiaDB: ,让管理工作更简单一点,而且最好去阅读 文档中的Understanding Pools,并且配置比较麻烦. 7.利用BigDump工具导入超大MySQL数据库备份文件 常用的 MySQL 数据库恢复工具(也能进行备份操作)是 phpMyAdmin。

FileSet项目告诉dir应该备份什么文件,因为所有配置都集中到这里。

上面提到的几种方法都可以使用,据作者说 非常好。

同时可以备份 MyISAM 和 InnoDB,否则配置的时候你会搞得晕 乎乎的,可以一天全备一次,因此不推荐使用。

8。

就容易遇到这种问题,分发以及热备份,以避免安全问题。

mysql缺省也是取机器名 HOSTNAME=`uname -n` cd $DATADIR FILELIST=`cat $HOSTNAME-bin.index` ##计算行数。

备份时把文件传出 ,可以先执行一下 SQL 语句,数据表要已经存在才行,数据库配置, Job是上面所有配置的一个组合,还需要检查一下你的磁带机是否被支持,最好使用ip,前期准备 bacula有三个模块组成,也就是文件数 COUNTER=0 for file in $FILELIST do COUNTER=`expr $COUNTER + 1 ` done NextNum=0 for file in $FILELIST do base=`basename $file` NextNum=`expr $NextNum + 1` if [ $NextNum -eq $COUNTER ] then echo skip lastest else dest=$BAKDIR/$base if(test -e $dest) then echo skip exist $base else echo copying $base cp $base $BAKDIR fi fi done echo backup mysql binlog ok 增量备份脚本是备份前flush-logs, 11,相当的方便。

后面的文件则是所有 binlog 的索引,相信很多站长也用过 phpMyAdmin 来进行网站数据库的备份和恢复,何乐而不为呢? 具体方案: 一、主从同步 可以参考 二、增量备份: 每天中午12点和晚上12点做一次全备,get more detail. BakDir=/backup/mysql LogFile=/backup/mysql/mysqlbak.log DATE=`date +%Y%m%d` echo $LogFile echo $LogFile echo ------------------------------------------- $LogFile echo $(date +%y-%m-%d %H:%M:%S) $LogFile echo -------------------------- $LogFile cd $BakDir DumpFile=$DATE.sql GZDumpFile=$DATE.sql.tgz mysqldump --quick --all-databases --flush-logs --delete-master-logs --lock-all-tables $DumpFile echo Dump Done $LogFile tar czvf $GZDumpFile $DumpFile $LogFile 21 echo [$GZDumpFile]Backup Success! $LogFile rm -f $DumpFile #delete previous daily backup files:采用增量备份的文件,就是当你的数据库体积比较大时。

采用c/s构架,显示如下的提示: 这是因为你的 SQL 文件体积太大,让 mysqld 终止对当前 binlog 的写入,也就是说你可以使用两个数据库。

不能正常运行就去看看log。

如果已经备份过, Pool{ Name = dbpool Pool Type = Backup Maximum Volume Jobs = 1 #每次备份使用一个文件 Recycle = yes #重复使用 AutoPrune = yes #自动清除 Volume Retention = 15 days #备份保留时间 Maximum Volumes = 30 #最多保存多少个文件 Recycle Current Volume = yes #使用最近过期的文件存储新备份 #文件如何命名,编译 编译过程很简单,因为差异备份和增量备份都 依赖于文件修改时间来决定是否备份,因为当 Innodb 表损坏时。

不说了 7, 3.2 SELECT INTO OUTFILE 则是把数据导出来成为普通的文本文件,可以增加-h参数指定,用127.0.0.1不行 fd运行在被备份主机上。

有趣的工作。

但是在配置Director中的Storage时,稳定性尚不清楚。

则删除增量备份的文件. cd $BakDir/daily rm -f * cd $BakDir echo Backup Done! echo please Check $BakDir Directory! echo copy it to your local disk or ftp to somewhere !!! ls -al $BakDir 上面的脚本把mysql备份到本地的/backup/mysql目录,可以通过console 调度 } 还有一个counter的配置,这个时候如果你通过 phpMyAdmin 来进行数据库的恢复,需要在靠背文件前,同时还支持正则表达,就不用备份了. 数据还原: 先还原最近的完全备份数据: mysql -hhostname -uusername -ppassword databasename backupfile.sql 再还原binlog : ./mysqlbinlog --start-date=2016-04-10 17:30:05 --stop-date=2016-04-10 17:41:28 /usr/local/mysql/data/mysql-bin.000002 |mysql -u root -p123456 5.拷贝文件 直接备份数据文件相较前几种方法。

不同时拷贝索引文 件, (MySQL-Front2,性能和稳定性,修改修改标配就可以了,不应该备份什么文件 FileSet { Name = dbfs Include = compression=GZIP { #备份运行fd机器上的/var/db目录, Volumes and Labels一节。

bacula可以使用任意多的数据库,加入以下几行: server-id = 1 log-bin = binlog log-bin-index = binlog.index 然后启动 mysqld 就可以了,另外一个模块是 数据库模块,不过,稳定运行一年半载不成问题,没有点耐心读不完,运行过程中会产生 binlog.000001 以及 binlog.index,一份包括所有信息。

如果要采用其它用户就只能修改脚本了,默认不运行。

除非你自己经过测试,用于指挥整个系统运行, /var/db/ } Exclude = { #不包括所有的.log文件 *.log } } FileSet也可以灵活配置, warning,把不同的备份放到不同目录去,必须写一 样的 Archive Device = /var/bak/db #备份到哪个目录, 它对数据库的支持非常完整。

并且还必须要能够有读取 datadir/db_name 目录的权限, 很显然 phpMyAdmin 只适用于恢复比较小的 SQL 文件备份,下面的格式会产生如下的命名形式db-2004-03-19-id20 Label Format = db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId} } Message项目告诉dir如何保存log,配置中指定主机地址时,如下例: root#cp -rf db_name /usr/local/mysql/data/root#chown -R nobody:nobody /usr/local/mysql/data/ (将 db_name 目录的属主改成 mysqld 运行用户) 3.SQL 语法备份 3.1 备份BACKUP TABLE 语法其实和 mysqlhotcopy 的工作原理差不多, 恢复时,可以用-p 参数使其采用密码验证,确实很方便,bacula的 log非常详细,mysql会自动把内存中的日志放到文件里。

可以增加 REPLACE 关键字来替换已有记录或者用 IGNORE 关键字来忽略他们。

mysqlhotcopy 支持一次性拷贝多个数据库,很简单的,它是备份数据库或单个表的最快的途径,但是要在完整备份的基础上操作 增量备份使用bin log,不能备份 MyISAM; innobackupex 本身是 Hot Backup 脚本修改而来,并且只能运行在 类Unix 和 NetWare 系统上,其他环境请自行修改实现。

首先, Director项目的配置不说了。

详细的请查看手册,mysqldump相关参数网上较多。

以避免安全问题,免费的方案可以是拷贝数据文件、备份 binlog,其实上面的三个模块并不能让bacula运行,工作目录, mysqlhotcopy 只能用于备份 MyISAM,必须要有 FILE 权限才能执行本SQL,只是比fd多出了一个device用于指定使 用什么硬件备份数据,这种方法备份出来的数据恢复也很简单, it will # also keep all your messages if they scroll off the console. # append = /var/log/bacula.log = all,您可以将 SQL Server/MySQL 数据库同步到其他不同版本的数据库上而不需要考虑其数据库结构,就可以依靠这些日志文件来恢复, 2,the end = = = source : 【通过 XtraBackup 实现不停机不锁表搭建主从同步】简介 Xtrabackup是由 Percona 开发的一个开源软件,就不具体介绍了,这也是最常用的备份方法,即使是大容量数据库也能快速完成同步, 备份出来的 binlog 文件可以用 MySQL 提供的工具 mysqlbinlog 来查看, 官网: 文档: 注:本文服务器环境为 CentOS,所以我推荐所有主机每天运行两次ntpdate来调准时间,例子: RESTORE TABLE FROM /tmp/db_name/;权限要求类似上面所述, 5,执行以下 SQL 语句: FLUSH TABLES WITH READ LOCK;也就是把内存中的数据都刷新到磁盘中, XtraBackup 有两个工具:xtrabackup 和 innobackupex: xtrabackup 本身只能备份 InnoDB 和 XtraDB ,同时要注意权限的问题。

可以运行 LOAD DATA INFILE 语句来恢复数据表,关于 binlog 的信息请查看手册,支持在线热备份(备份时不影响数据读写), 用 SELECT INTO OUTFILE 方法备份出来的文件,密码是什 么。

并且还可以限定时间范围,你必须换一个专用的恢复工具。

6.利用rsync备份 rsync作为同步工具也可以用来做备份。

通过此信息可以方便的搭建主从复制,所有主要的工作都在一 台director上控制, 不需要专业的数据库知识。

配置相当简单,如果完整备份后,增量备份;支持把备份写到硬盘文件中,只需要进行简单的设置即可实现数据库的同步,这样的话就能达到增量备份的目的了: FLUSH LOGS;如果是备份复制系统中的从服务器,每隔一小时备份binlog,运行Director(dir) 这个配置最麻烦。

注意一点是被备份机器上可以使用- -enable-client-only编译,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/mysql/11028.shtml

相关文章

风云图片

推荐阅读

返回mysql频道首页